<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8" />
    <title>4.getSnapshotBeforeUpdate的使用场景</title>
    <style>
        .list {
            width: 100px;
            height: 150px;
            background-color: aquamarine;
            overflow-y: auto;
        }

        .news {
            height: 30px;
        }
    </style>
</head>

<body>
    <!-- 准备好一个“容器” -->
    <div id="test"></div>
    <!-- 引入react核心库 -->
    <script type="text/javascript" src="../js/react.development.js"></script>
    <!-- 引入react-dom，用于支持react操作DOM -->
    <script type="text/javascript" src="../js/react-dom.development.js"></script>
    <!-- 引入babel，用于将jsx转为js -->
    <script type="text/javascript" src="../js/babel.min.js"></script>
    <script type="text/babel">
        /* 此处一定要写babel */
			//1.创建组件
			class NewsList extends React.Component {
				state = {
					newsList: [],
				}
				componentDidMount() {
					let news = '新闻'
					let count = 0
					setInterval(() => {
						const { newsList } = this.state
						count++
						let news = '新闻' + count
						this.setState({
							newsList: [news, ...newsList],
						})
					}, 1000)
				}
				getSnapshotBeforeUpdate() {
                    // console.log("first,",this.refs.newslist.scrollHeight)
                   return this.refs.newslist.scrollHeight
                }
                componentDidUpdate(prevProps,prevState,height){
                    this.refs.newslist.scrollTop += this.refs.newslist.scrollHeight  - height
                }
				render() {
					const { newsList } = this.state
					return (
						<div className="list" ref="newslist">
							{newsList.map((item, index) => {
								return (
									<div className="news" key={index}>
										{item}
									</div>
								)
							})}
						</div>
					)
				}
			}
			//2.渲染虚拟DOM到页面
			ReactDOM.render(<NewsList />, document.getElementById('test'))
		</script>
</body>

</html>